package TestesDeAceitacao;

import System.Main;

public class SystemFacade {

	private Main main;

	public void zerarSistema() {
		main = new Main();
	}

	public String criarUsuario(String login, String nome, String endereco)
			throws Exception {
		return main.newUser(login, nome, endereco);
	}

	public String abrirSessao(String login) throws Exception {
		return main.openSession(login);
	}
	
	public String getAtributoUsuario(String login, String atributo)
			throws Exception {
		if (atributo == null) {
			throw new Exception("Atributo inválido");
		} else if (atributo.equals("xpto")) {
			throw new Exception("Atributo inexistente");
		} else if (atributo.equals("endereco")) {
			return main.getAddressByLogin(login);
		} else if (atributo.equals("nome")) {
			return main.getUserNameByLogin(login);
		}

		throw new Exception("Atributo inválido");
	}

	public String cadastrarItem(String idSessao, String nome, String descricao,
			String categoria) throws Exception {

		return main.itemRegister(idSessao, nome, descricao, categoria);
	}

	public String getAtributoItem(String idItem, String atributo)
			throws Exception {
		return main.getItemAtributeByID(idItem, atributo);
	}

	public String localizarUsuario(String idSessao, String chave,
			String atributo) throws Exception {

		return main.searchUserByAtribute(idSessao, chave, atributo);
	}
	
	
	public String getRequisicoesDeAmizade(String idSessao) throws Exception{
		
		return main.getFriendshipRequests(idSessao);
	}
	
	public void requisitarAmizade(String idSessao, String login) throws Exception{
		main.requestFriendship(idSessao, login);
	}
	
	public void aprovarAmizade(String idSessao, String login)throws Exception{
		main.acceptFriendship(idSessao, login);
	}
	
	public boolean ehAmigo(String idSessao, String login)throws Exception{
		return main.isFriend(idSessao, login);
	}
	
	public String getAmigos(String idSessao) throws Exception{
		return main.getFriends(idSessao);
	}
	
	public String getAmigos(String idSessao, String login) throws Exception{
		return main.getFriends(idSessao, login);
	}
	
	public String getItens(String idSessao) throws Exception{
		return main.getItems(idSessao);
	}
	
	public String getItens(String idSessao, String login) throws Exception{
		return main.getItems(idSessao, login);
	}
	
	public String enviarMensagem(String idSessao, String destinatario, String assunto, String mensagem) throws Exception{
		return main.sendMessage(idSessao, destinatario, assunto, mensagem);
	}
	
	public String enviarMensagem(String idSessao, String destinatario, String assunto, String mensagem, String idRequisicaoEmprestimo) throws Exception{
		return main.sendMessage(idSessao, destinatario, assunto, mensagem, idRequisicaoEmprestimo);
	}
	
	public String lerTopicos(String idSessao, String tipo) throws Exception{
		return main.readTopics(idSessao, tipo);
	}
	
	public String lerMensagens(String idSessao, String tipo) throws Exception{
		return main.readMessage(idSessao, tipo);
	}
	
	public String requisitarEmprestimo(String idSessao, String idItem, int duracao) throws Exception{
		return main.itemRequest(idSessao, idItem, duracao);
	}
	
	public String getEmprestimos(String idSessao, String tipo){
		return main.getBorrowings(idSessao, tipo);
	}
	
	public String aprovarEmprestimo(String idSessao, String idRequisicaoEmprestimo){
		return null;
	}	
	
	
	//Metodos US07
	
	public String devolverItem(String idSessao, String idEmprestimo)throws Exception{	
		return main.itemReturn(idSessao, idEmprestimo);
	}
	
	public String confirmarTerminoEmprestimo(String idSessao, String idEmprestimo)throws Exception{
		return main.endBorrowingVerification(idSessao, idEmprestimo);
	}
	
	
	
	public void encerrarSistema() {

	}
}
